OpenBoot PROM, gestion du "BIOS"
1 Introduction
La PROM est l'ééquivalent du BIOS ou EFI sur un x86 standard.
2 Approche
Pour connaitre sa version de PROM :
/usr/platform/`uname -m`/sbin/prtdiag -v
ou
prtconf -V
2.1 NVRAM
La NVRAM peut être modifiée par un utilisateur pour changer quelques options sur la machine :
Une fois la NVRAM enregistrée sur le chipset, lors de l'appel de la PROM au boot, elle ira checker les préférences de l'utilisateur au niveau de la NVRAM afin de les appliquer.
3 Diagnostic
Pour passer en mode Diagnostic, il faut presser : Stop+D
Pour arrêter le diagnostic en cours : Stop+A
3.1 Supprimer la possibilité d'utiliser le clavier
Si vous voulez désactiver le clavier au boot, éditez le ficher "/etc/default/kbd" et décommentez cette ligne :
KEYBOARD_ABORT=disable
Sauvegardez, quittez et lancez cette commande :
kbd -i
Quand vous aurez fait celà, vous n'aurez le droit qu'à la séquence de touche Stop+A.
4 Commandes PROM
J'ai volontairement laissé en anglais les description pour qu'il n'y ai pas d'erreurs de traduction :
Commande | Description |
---|---|
banner | Displays the power-on banner |
boot | Boots the system |
help | Lists the main help categories |
printenv | Displays all parameters' current and default values |
setenv | Sets the specified NVRAM parameter to some value |
reset-all | Resets the entire system; similar to a power cycle |
set-defaults | Resets all parameter values to the factory defaults |
sifting text | Displays the FORTH commands containing text |
.registers | Displays the contents of the registers |
probe-scsi | Identifies the devices on the internal Small Computer System Interface (SCSI) bus |
probe-scsi-all | Identifies the devices on all SCSI buses |
probe-ide | Identifies devices on the internal integrated device electronics (IDE) bus |
probe-fcal-all | Identifies devices on all Fibre Channel loops |
show-devs | Displays the entire device tree |
devalias | Identifies the current boot device alias for the system |
nvalias | Creates a new device alias name |
nvunalias | Removes a device alias name |
show-disks | Displays and allows a selection of device paths for the disks to be used for nvalias |
sync | Manually attempts to flush memory and synchronize file systems |
test | Runs self-tests on specified devices |
4.1 Banner
ok banner
Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 360MHz), Keyboard Present OpenBoot 3.31, 128 MB (50 ns) memory installed, Serial #11888271. Ethernet address 8:0:20:b5:66:8f, Host ID: 80b5668f.
4.2 Boot
- Ceci permet d'avoir un mode interractif :
ok boot -a
Enter filename [kernel/sparcv9/unix]: Enter default directory for modules [/platform/SUNW,UltraAX-i2/kernel /platform/sun4u/kernel /kernel /usr/kernel]: Name of system file [etc/system]: SunOS Release 5.10 Version s10 64-bit Copyright 1983-2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. root filesystem type [ufs]: Enter physical name of root device [/pci@1f,0/pci@1/scsi@8/disk@0,0:a]:
- Pour booter sur un CD/DVD :
ok boot cdrom -s
- Reconfigurer le boot :
ok boot -r
- Activer le mode verbose :
ok boot -v
4.3 Help
Voici la commande d'aide :
ok help
Enter 'help command-name' or 'help category-name' for more help (Use ONLY the first word of a category description) Examples: help system -or- help nvramrc Categories: boot (Load and execute a program) nvramrc (Store user defined commands) system configuration variables (NVRAM variables) command line editing editor (nvramrc editor) resume execution devaliases (Device aliases) diag (Diagnostics commands) ioredirect (I/O redirection commands) misc (Miscellaneous commands) ok
Voici quelques exemples :
ok help boot ok help nvramrc ok help diag ok help misc
4.4 printenv
Cette commande sert à lister toutes les préférences NVRAM :
ok printenv
Variable Name Value Default Value tpe-link-test? true true scsi-initiator-id 7 7 keyboard-click? false false keymap ttyb-rts-dtr-off false false ttyb-ignore-cd true true ttya-rts-dtr-off false false ttya-ignore-cd true true ttyb-mode 9600,8,n,1,- 9600,8,n,1,- ttya-mode 9600,8,n,1,- 9600,8,n,1,- pcia-probe-list 1,2,3,4 1,2,3,4 pcib-probe-list 1,2,3 1,2,3 mfg-mode off off diag-level max max #power-cycles 273 output-device screen screen input-device keyboard keyboard boot-command boot boot auto-boot? true true diag-device net net boot-device disk net disk net local-mac-address? false false screen-#columns 80 80 screen-#rows 34 34 use-nvramrc? false false nvramrc devalias pgx24 /pci1f,0 ... security-mode none security-password security-#badlogins 0 diag-switch? false false ok
Pour afficher seulement 1 paramètre :
ok printenv boot-device
boot-device = disk net
4.5 Setenv
Si le paramètre autoboot est à true, le système bootera tout seul, sinon vous aurez le prompt :
ok printenv auto-boot? auto-boot? = true ok ok setenv auto-boot? false auto-boot? = false
Pour éteindre la machine, vider les buffers et les registres, utilisez cette commande :
ok reset-all
Resetting ...
4.6 Set-defaults
Pour remettre tous les parmètres par défaut, utilisez cette commande :
ok set-defaults
Setting NVRAM parameters to default values. ok
Pour reseter qu'un seul paramètre (ici diag-level) :
ok set-default diag-level
4.7 Probe
Pour trouver toutes les commandes probe disponibles :
ok sifting probe
(f006c954) probe-all (f006c5a0) probe-all (f006c378) probe-ide (f006c1e8) probe-pci-slot (f006bc8c) probe-scsi (f006bd78) probe-scsi-all (f0060fe8) probe-pci (output truncated)
This command may hang the system if a Stop-A or halt command has been executed. Please type reset-all to reset the system before executing this command. Do you wish to continue? (y/n) n
Si des portions de Solaris OS se trouvaient dans la RAM quand le système à été suspendu, la commande probe peut éteindre la machine. Pour éviter ce genre de chose :
ok setenv auto-boot? false ok reset-all
Sinon vous pouvez utiliser .registers :
ok .registers
Normal Alternate MMU Vector 0: 0 0 0 0 1: 0 0 0 0 2: 0 0 0 0 3: 0 0 0 0 4: 0 0 0 0 (output edited for brevity) %PC 0 %nPC 0 %TBA 0 %CCR 0 XCC:nzvc ICC:nzvc
Vérifiez que toutes les valeurs soient bien à 0 sinon le système peut s'éteindre.
4.7.1 Probe-scsi
Pour un périphérique SCSI, utilisez cette commande :
ok probe-scsi
Target 1 Unit 0 Disk FUJITSU MAB3045S SUN4.2G17059825M62990 Target 3 Unit 0 Disk IBM DDRS34560SUN4.2GS98E99255C5917 (C) Copyright IBM Corp. 1997. All rights reserved. Target 6 Unit 0 Removable Read Only device SONY CDROM
4.7.2 Probe-scsi-all
Idem mais pour tous les périphériques SCSI :
ok probe-scsi-all
/pci@1f,0/pci@1/pci@1/SUNW,isptwo@4 Target 3 Unit 0 Disk FUJITSU MAB3045S SUN4.2G1907 Target 4 Unit 0 Removable Tape EXABYTE EXB-8505SMBANSH20090
4.7.3 Probe-ide
Pour les périphériques IDE :
ok probe-ide
Device 0 ( Primary Master ) ATA Model : ST 38420A (DISK) Device 1 ( Primary Slave ) Not Present Device 2 ( Secondary Master ) Removable ATAPI Model : CRD-8322B (CD-ROM) Device 3 ( Secondary Slave ) Not Present
4.8 Show-dev
Pour lister tous les périphériques :
ok show-devs
/SUNW,UltraSPARC-IIi@0,0 /pci@1f,0 /virtual-memory /memory@0,10000000 /pci@1f,0/pci@1 /pci@1f,0/pci@1,1 /pci@1f,0/pci@1,1/ide@3 /pci@1f,0/pci@1,1/SUNW,m64B@2 /pci@1f,0/pci@1,1/network@1,1 /pci@1f,0/pci@1,1/ebus@1 /pci@1f,0/pci@1,1/ide@3/cdrom /pci@1f,0/pci@1,1/ide@3/disk /pci@1f,0/pci@1,1/ebus@1/SUNW,CS4231@14,200000 /pci@1f,0/pci@1,1/ebus@1/flashprom@10,0 /pci@1f,0/pci@1,1/ebus@1/eeprom@14,0 /pci@1f,0/pci@1/pci@1 /pci@1f,0/pci@1/pci@1/SUNW,isptwo@4 (output truncated) ok
4.9 Devalias
Pour identifier les périphériques de boot :
ok devalias
screen /pci@1f,0/pci@1,1/SUNW,m64B@2 net /pci@1f,0/pci@1,1/network@1,1 cdrom /pci@1f,0/pci@1,1/ide@3/cdrom@2,0:f disk /pci@1f,0/pci@1,1/ide@3/disk@0,0 disk3 /pci@1f,0/pci@1,1/ide@3/disk@3,0 disk2 /pci@1f,0/pci@1,1/ide@3/disk@2,0 disk1 /pci@1f,0/pci@1,1/ide@3/disk@1,0 disk0 /pci@1f,0/pci@1,1/ide@3/disk@0,0 ide /pci@1f,0/pci@1,1/ide@3 floppy /pci@1f,0/pci@1,1/ebus@1/fdthree ttyb /pci@1f,0/pci@1,1/ebus@1/se:b ttya /pci@1f,0/pci@1,1/ebus@1/se:a keyboard! /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8:forcemode keyboard /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8 mouse /pci@1f,0/pci@1,1/ebus@1/su@14,3062f8 name aliases
Pour booter avec les périphériques ci dessus :
ok boot
4.9.1 nvalias
Pour créer un alias d'un périphérique déjà existant :
nvalias aliasname device_path
Pour mettre cet alias dans la NVRAM :
devalias aliasname device_path
Voici un exemple :
ok show-disks
a) /pci@1f,0/pci@1/scsi@1,1/disk b) /pci@1f,0/pci@1/scsi@1/disk c) /pci@1f,0/pci@1,1/ide@3/cdrom d) /pci@1f,0/pci@1,1/ide@3/disk e) /pci@1f,0/pci@1,1/ebus@1/fdthree@14,3023f0 q) NO SELECTION
Enter Selection, q to quit: d
/pci@1f,0/pci@1,1/ide@3/disk has been selected. Type ^Y (Control-Y) to insert it in the command line. e.g. ok nvalias mydev ^Y for creating devalias mydev for /pci@1f,0/pci@1,1/ide@3/disk
ok nvalias mydisk ^y
Pour copier le path selectionné, faites Ctrl+Y, puis rajoutez le LUN (Logical Unit Number) du disque:
ok nvalias mydisk /pci@1f,0/pci@1,1/ide@3/disk@0,0:a
Pour ajouter le boot à ce nouvel alias :
ok setenv boot-device mydisk boot-device = mydisk ok boot
4.9.2 nvualias
Pour supprimer un alias :
ok nvunalias aliasname
Exemple :
ok nvunalias mydisk ok setenv boot-device disk
boot-device = disk
ok reset-all
Resetting ...
Utilisez ensuite cette commande pour voir les paramètres :
/usr/sbin/eeprom
4.10 eeprom
Pour lister tous les paramètres avec leurs valeurs :
eeprom
Pour lister qu'une seule valeur :
eeprom boot-device
boot-device=disk
Pour changer la valeur d'une commande :
eeprom boot-device=disk2
eeprom auto-boot?=true
5 Syncroniser la PROM
Pour syncroniser la PROM car le système ne réponds plus par exemple :
ok sync